// <!-- <template>
//   <div v-if="visible" class="mask" @click.self="close">
//     <div class="modal flex-column">
//       <div class="modal-top flex-end">
//         <img
//           src="@/assets/images/homework/btn-close.svg?url"
//           @click="close"
//           class="btn-close"
//         />
//       </div>
//       <section class="modal-content">
//         <p class="modal-title" align="center">
//           {{ options.title }}
//         </p>
//         <p align="center" class="modal-message">{{ options.message }}</p>
//       </section>

//       <div class="modal-footer">
//         <div class="v2-btn-big v2-btn-cancel" @click="close">取消</div>
//         <div class="v2-btn-big v2-btn-confirm" @click="confirm">确认</div>
//       </div>
//     </div>
//   </div>
// </template>

// <script setup lang="ts">
// import { ref, reactive } from 'vue'

// export interface IOptions {
//   title: string
//   message: string
//   confirmCallback: () => void
// }
// const visible = ref(false)
// let options = reactive<IOptions>({
//   title: '提示',
//   message: '',
//   confirmCallback: () => {}
// })

// const confirm = () => {
//   options.confirmCallback()
//   close()
// }

// const show = (params: IOptions) => {
//   options = params
//   visible.value = true
// }

// const close = () => {
//   visible.value = false
// }

// // 暴露方法给父组件
// defineExpose({
//   show,
//   close
// })
// </script>

// <style lang="less" scoped>
// .mask {
//   position: fixed;
//   top: 0;
//   left: 0;
//   display: flex;
//   justify-content: center;
//   align-items: center;
//   width: 100%;
//   height: 100%;
//   background-color: rgba(0, 0, 0, 0.5);
//   z-index: 9999;
// }
// .modal {
//   width: 630px;
//   height: 310px;
//   box-sizing: border-box;
//   padding: 20px;
//   padding-bottom: 30px;
//   border-radius: 16px;
//   background-color: #f2f8ff;
//   background-image: linear-gradient(
//       180deg,
//       rgba(238, 245, 255, 0) 0%,
//       #cee2ff 95.8%
//     ),
//     radial-gradient(
//       16.01% 57.7% at 0% 59.86%,
//       #ffffff 0%,
//       rgba(255, 255, 255, 0) 100%
//     );

//   .modal-top {
//     .btn-close {
//       width: 24px;
//       height: 24px;
//       cursor: pointer;
//       float: right;
//     }
//   }
//   .modal-content {
//     flex: 1;
//     display: flex;
//     flex-direction: column;
//     justify-content: space-evenly;
//     padding: 20px 0;
//     .modal-title {
//       font-size: @v2-size-biggest;
//       font-weight: 700;
//       color: #000;
//     }
//     .modal-message {
//       font-size: @v2-size-bigger;
//     }
//   }
//   .modal-footer {
//     display: flex;
//     justify-content: center;
//     align-items: center;
//     cursor: pointer;

//     .v2-btn-big + .v2-btn-big {
//       margin-left: 24px;
//     }
//   }
// }
// </style> -->
